package models.common.bean;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Transient;

import models.common.entity.t_user_credit.AuditResult;

import common.constants.ConfConst;
import common.constants.Constants;
import common.utils.Security;

/**
 * 查询放款人额度信息明细表总额
 * 
 * @author fanghanyong
 * @version 2018-01-20 下午16：00
 */
@Entity
public class ReceivablesPushCreditBean implements Serializable {
	/**
	 * 构造器
	 */
	public ReceivablesPushCreditBean() {
	};

	@Id
	public long id;
	@Transient
	public String signId;

	public String getSignId() {

		return Security.addSign(this.id, Constants.BID_ID_SIGN,
				ConfConst.ENCRYPTION_KEY_DES);
	}

	/** 放款人id */
	public long lender_id;

	@Transient
	public String lenderSignId;

	public String getLenderSignId() {

		return Security.addSign(this.lender_id, Constants.BID_ID_SIGN,
				ConfConst.ENCRYPTION_KEY_DES);
	}
	
	/** 账款序号 */
	public String contract_name_code;
	
	 /**平台账款编号*/
    public String platform_account_code;
    
	/** 推送时间 */
	public Date time;
	
	/** 债权人企业全称 */
	public String creditor_name;
	
	/** 放款人名称 */
	public String full_name;
	
	/** 账款金额 */
	public double creditor_money;
	
	/** 状态 0 默认 1 推送中 2 已确认 3 退回 */
	public int status;
	
	/** '状态 0 默认 1 推送中 2 已确认 3 退回' */
	public AuditResult getStatus() {
		AuditResult auditResult = AuditResult.getEnum(this.status);
		return auditResult;
	}

	public void setStatus(AuditResult auditResult) {
		this.status = auditResult.code;
	}

	public enum AuditResult {

		/** '状态 0 默认 1 推送中 2 已确认 3 退回' */
		HAVE_NO_AUDIT(0, "默认"),

		/** 审核未通过 */
		AUDIT_PUSH(1, "推送中"),

		/** 审核未通过 */
		AUDIT_SURE(2, "已确认"),

		/** 审核未通过 */
		AUDIT_BACK(3, "退回");

		public int code;
		public String value;

		private AuditResult(int code, String value) {
			this.code = code;
			this.value = value;
		}

		/**
		 * 根据code取得会员类型,没有找到返回null
		 * 
		 * @description
		 * @return
		 */
		public static AuditResult getEnum(int code) {
			AuditResult[] memberTypes = AuditResult.values();
			for (AuditResult memberType : memberTypes) {
				if (memberType.code == code) {

					return memberType;
				}
			}

			return HAVE_NO_AUDIT;
		}
	}
}